home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PsL Monthly 1993 December
/
PSL Monthly Shareware CD-ROM (December 1993).iso
/
prgmming
/
dos
/
basic
/
apg_2.exe
/
MAINT.SKL
< prev
next >
Wrap
Text File
|
1993-02-20
|
18KB
|
746 lines
XX ''''''''''''''''''''''''''''''''''''''''''''''''''
XX ' '
XX ' INVENTORY '
XX ' '
XX ' CREATED BY APG '
XX ' '
XX ' S & M SOFTWARE '
XX ' '
XX ' COPYRIGHT 1993 '
XX ' '
XX ' '
XX ' Author: John N Shankland '
XX ' Date: 01-28-1993 '
XX ' Time: 10:43:36 '
XX ' '
XX ''''''''''''''''''''''''''''''''''''''''''''''''''
DEFINT A-Z
CONST FALSE = 0, TRUE = NOT FALSE
TYPE rectype 'Define variables for file
XX inbr AS STRING * 10
XX desc AS STRING * 30
XX num1 AS DOUBLE
XX num2 AS INTEGER
XX num3 AS SINGLE
XX num4 AS SINGLE
sts AS STRING * 1
END TYPE
TYPE indextype 'Define index
recnum AS INTEGER
XX inbr AS STRING * 10
END TYPE
DECLARE FUNCTION getinput$ (work$, fl%, nflg$, plen, prec, form$, act$, mode$)
DECLARE SUB arrow (mode$, opt$, tracfld)
DECLARE SUB clearfore ()
DECLARE SUB displaydata ()
DECLARE SUB export ()
DECLARE SUB message (msg$, resp$)
DECLARE SUB newrec (recnum, numofrec, maxrec, newkey$, exit$, mode$)
DECLARE SUB nextrec (direc$, exit$, numofrec, recnum)
DECLARE SUB sortindex ()
DIM SHARED numofrec
XX DIM SHARED f7.2$
XX DIM SHARED f4.0$
XX DIM SHARED f2.2$
XX DIM SHARED f0.3$
XX DIM SHARED inv AS rectype
XX f7.2$ = "########.##"
XX f4.0$ = "#####"
XX f2.2$ = "###.##"
XX f0.3$ = "#.###"
ON ERROR GOTO errhandle
COLOR 15, 0
CLS
XX OPEN "inv.dat" FOR RANDOM AS #1 LEN = LEN(inv)
XX numofrec = LOF(1) \ LEN(inv)
maxrec = numofrec + 100
DIM SHARED index(1 TO maxrec) AS indextype
IF numofrec <> 0 THEN
FOR recnum = 1 TO numofrec
XX GET #1, recnum, inv
index(recnum).recnum = recnum
XX index(recnum).inbr = inv.inbr
NEXT
END IF
'
'----- Print menu -----'
'
XX LOCATE 1, 35
COLOR 7, 9
XX PRINT " INVENTORY " '
XX LOCATE 2, 35
XX PRINT "MAINTENANCE" '
sortindex 'sort records
recnum = 0 'reset record number
XX LOCATE 4, 10: PRINT "01-Item number "
XX LOCATE 6, 5: PRINT "02-Description "
XX LOCATE 7, 5: PRINT "03-num 7.2 "
XX LOCATE 8, 5: PRINT "04-num 4.0 "
XX LOCATE 9, 5: PRINT "05-num 2.2 "
XX LOCATE 10, 5: PRINT "06-num 4 0.3 "
'
'----- Start processing -----'
'
start:
mode$ = ""
XX inv.inbr = ""
XX inv.desc = ""
XX inv.num1 = 0
XX inv.num2 = 0
XX inv.num3 = 0
XX inv.num4 = 0
XX inv.sts = ""
nflg$ = ""
clearfore
XX LOCATE 4, 26
XX newkey$ = getinput$(inv.inbr, 10, "S", 0, 0, "", act$, mode$)
IF act$ = "PU" OR act$ = "PD" THEN
opt$ = act$
IF recnum = 0 THEN
IF opt$ = "PU" AND numofrec <> 0 THEN recnum = numofrec + 1
END IF
GOTO menu10
END IF
XX IF newkey$ = " " GOTO fin
XX IF UCASE$(newkey$) = "N " THEN
opt$ = "N"
GOTO menu10
END IF
GOTO io
'
'------ Option bar -----'
'
menu:
mode$ = "C"
LOCATE 23, 1
PRINT STRING$(80, " ")
LOCATE 23, 12, 1
COLOR 7, 9
PRINT "FIELD #, PgUp, PgDn, ";
PRINT "All, Next, Back, Delete, Sort, Export";
COLOR 15, 0
PRINT " "
COLOR 15, 9
LOCATE 23, 18: PRINT "#"
LOCATE 23, 33: PRINT "A"
LOCATE 23, 38: PRINT "N"
LOCATE 23, 44: PRINT "B"
LOCATE 23, 50: PRINT "D"
LOCATE 23, 58: PRINT "S"
LOCATE 23, 64: PRINT "E"
COLOR 15, 0
opt$ = ""
menu5:
LOCATE 23, 71
PRINT opt$;
DO
instr$ = INKEY$
LOOP WHILE instr$ = ""
IF INSTR("BANDSE", UCASE$(instr$)) > 0 THEN opt$ = instr$: GOTO menu10
IF instr$ = CHR$(13) GOTO menu10
IF instr$ = CHR$(27) GOTO menu
IF instr$ = CHR$(8) GOTO menu
IF LEN(instr$) = 2 THEN
code = ASC(RIGHT$(instr$, 1))
IF code = &H49 THEN opt$ = "PU"
IF code = &H51 THEN opt$ = "PD"
GOTO menu10
END IF
opt$ = opt$ + instr$
GOTO menu5
'
'----- Start here for action keys -----'
'
menu10:
resp$ = ""
IF opt$ = "" THEN GOTO start
opt$ = UCASE$(opt$)
IF MID$(opt$, 1, 1) = "0" THEN opt$ = MID$(opt$, 2, 1)
LOCATE 23, 1
PRINT STRING$(80, " ")
LOCATE 23, 6, 1
COLOR 7, 9
IF INSTR("SEBNPUPD", opt$) = 0 THEN
PRINT "Active Keys: <PgUp>, <PgDn>, <Arrows>, <Del>, <Ins>, <Esc> or <Enter>";
COLOR 15, 9
LOCATE 23, 20: PRINT "PgUp";
LOCATE 23, 28: PRINT "PgDn";
LOCATE 23, 36: PRINT "Arrows";
LOCATE 23, 46: PRINT "Del";
LOCATE 23, 53: PRINT "Ins";
LOCATE 23, 60: PRINT "Esc";
LOCATE 23, 69: PRINT "Enter";
END IF
COLOR 15, 0
SELECT CASE opt$
CASE "1"
message "Can not change index - Press any key", resp$
GOTO menu
XX CASE "2" 'Description
XX GOTO fld20
XX CASE "3"
XX GOTO fld30
XX CASE "4"
XX GOTO fld40
XX CASE "5"
XX GOTO fld50
XX CASE "6"
XX GOTO fld60
CASE "A"
mode$ = "A"
GOTO fld20
CASE "N", "PD"
direc$ = "F"
nextrec direc$, exit$, numofrec, recnum
IF exit$ = "A" GOTO start
GOTO menu
CASE "B", "PU"
direc$ = "B"
nextrec direc$, exit$, numofrec, recnum
IF exit$ = "A" GOTO start
GOTO menu
CASE "D"
XX inv.sts = "D"
GOTO del
CASE "S"
resp$ = "1"
message "Sorting file - Please wait", resp$
sortindex
resp$ = "2"
message "", resp$
CASE "E"
CLOSE (2)
XX KILL "john.exp"
resp$ = "1"
message "Preparing file for export - Please wait", resp$
export
resp$ = "2"
message "", resp$
XX GET #1, recnum, john
END SELECT
GOTO menu
'
'----- Input fields -----'
'
XX fld20: ' Description
XX tracfld = 2
XX LOCATE 6, 26
XX inv.desc = getinput$(inv.desc, 30, "S", 0, 0, "", act$, mode$)
XX LOCATE 25, 1
XX PRINT STRING$(80, " ");
XX IF inv.desc = " " AND mode$ <> "C" THEN
XX GOTO start
XX END IF
XX IF mode$ = "C" OR act$ <> "" GOTO add
XX
XX fld30:
XX tracfld = 3
XX LOCATE 7, 26
XX IF mode$ = "N" THEN
XX num1$ = STRING$(11, " ")
XX ELSE
XX num1$ = STR$(inv.num1) + STRING$(11, " ")
XX END IF
XX inv.num1 = VAL(getinput$(num1$, 11, "N", 7, 2, f7.2$, act$, mode$))
XX IF mode$ = "C" OR act$ <> "" GOTO add
XX
XX fld40:
XX tracfld = 4
XX LOCATE 8, 26
XX IF mode$ = "N" THEN
XX num2$ = STRING$(6, " ")
XX ELSE
XX num2$ = STR$(inv.num2) + STRING$(6, " ")
XX END IF
XX inv.num2 = VAL(getinput$(num2$, 6, "N", 4, 0, f4.0$, act$, mode$))
XX IF mode$ = "C" OR act$ <> "" GOTO add
XX
XX fld50:
XX tracfld = 5
XX LOCATE 9, 26
XX IF mode$ = "N" THEN
XX num3$ = STRING$(6, " ")
XX ELSE
XX num3$ = STR$(inv.num3) + STRING$(6, " ")
XX END IF
XX inv.num3 = VAL(getinput$(num3$, 6, "N", 2, 2, f2.2$, act$, mode$))
XX IF mode$ = "C" OR act$ <> "" GOTO add
XX
XX fld60:
XX tracfld = 6
XX LOCATE 10, 26
XX IF mode$ = "N" THEN
XX num4$ = STRING$(5, " ")
XX ELSE
XX num4$ = STR$(inv.num4) + STRING$(5, " ")
XX END IF
XX inv.num4 = VAL(getinput$(num4$, 5, "N", 0, 3, f0.3$, act$, mode$))
XX IF mode$ = "C" OR act$ <> "" GOTO add
'
'----- Add or change record or field -----'
'
add: 'Add record
newrec recnum, numofrec, maxrec, newkey$, exit$, mode$
IF exit$ = "Y" THEN GOTO fin
IF act$ = "" GOTO menu
IF act$ = "PD" THEN direc$ = "F"
IF act$ = "PU" THEN direc$ = "B"
IF act$ = "PD" OR act$ = "PU" THEN
nextrec direc$, exit$, numofrec, recnum
IF exit$ = "A" GOTO start
GOTO menu10
END IF
IF mode$ = "N" THEN mode$ = "Z"
IF act$ = "AU" THEN
IF tracfld - 1 < 2 THEN
BEEP
tracfld = 3
END IF
opt$ = MID$(STR$(tracfld - 1), 2)
GOTO menu10
END IF
IF act$ = "AD" THEN
XX IF tracfld + 1 > 6 THEN
BEEP
XX tracfld = 5
END IF
opt$ = MI